<%
# encoding: utf-8
#
# Redmine plugin for Document Management System "Features"
#
# Copyright © 2011-20 Karel Pičman <karel.picman@kontron.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
%>

<% assignments = Array.new %>
<% if @user %>
  <% all_assignments = DmsfWorkflowStepAssignment.joins(
      'LEFT JOIN dmsf_workflow_step_actions ON dmsf_workflow_step_assignments.id = dmsf_workflow_step_actions.dmsf_workflow_step_assignment_id').where(
      :dmsf_workflow_step_assignments => { :user_id => @user.id }).where(
      ['dmsf_workflow_step_actions.id IS NULL OR dmsf_workflow_step_actions.action = ?', DmsfWorkflowStepAction::ACTION_DELEGATE]) %>
  <% all_assignments.find_each do |assignment| %>
    <% if assignment.dmsf_file_revision.dmsf_file.last_revision &&
        !assignment.dmsf_file_revision.dmsf_file.last_revision.deleted? &&
        (assignment.dmsf_file_revision.workflow == DmsfWorkflow::STATE_WAITING_FOR_APPROVAL) &&
        (assignment.dmsf_file_revision == assignment.dmsf_file_revision.dmsf_file.last_revision) %>
      <% assignments << assignment %>
    <% end %>
  <% end %>
<% end %>
<% unless defined?(EasyExtensions) %>
  <h3><%= l(:open_approvals)%> (<%= assignments.size %>)</h3>
<% end %>
<% if assignments.any? %>
  <%= form_tag do %>
    <table class="list">
      <thead>
        <tr>
          <th><%= l(:field_project) %></th>
          <th><%= l(:field_label_dmsf_workflow) %></th>
          <th><%= l(:field_status) %></th>
          <th><%= l(:label_document) %></th>
          <th><%= l(:field_folder) %></th>
          <th></th>
        </tr>
      </thead>
      <tbody>
        <% assignments.each do |assignment| %>
          <tr id="assignment-<%= assignment.id %>">
            <td class="project">
              <% if assignment.dmsf_file_revision.dmsf_file.project %>
                <%= link_to_project(assignment.dmsf_file_revision.dmsf_file.project) %>
              <% end %>
            </td>
            <td>
              <% if assignment.dmsf_workflow_step && assignment.dmsf_workflow_step.dmsf_workflow %>
                  <%= link_to(h(assignment.dmsf_workflow_step.dmsf_workflow.name),
                    edit_dmsf_workflow_path(assignment.dmsf_workflow_step.dmsf_workflow)) %>
              <% end %>
            </td>
            <td class="dmsf_workflow">
              <% if assignment.dmsf_workflow_step.dmsf_workflow %>
                  <%= link_to(
                          assignment.dmsf_file_revision.workflow_str(false),
                          log_dmsf_workflow_path(
                              :project_id => assignment.dmsf_file_revision.dmsf_file.project_id,
                              :id => assignment.dmsf_workflow_step.dmsf_workflow_id,
                              :dmsf_file_revision_id => assignment.dmsf_file_revision_id),
                          :title => assignment.dmsf_file_revision.workflow_tooltip,
                          :remote => true) %>
              <% else %>
                  <%= assignment.dmsf_file_revision.workflow_str(false) %>
              <% end %>
            </td>
            <td class="title">
              <% if assignment.dmsf_file_revision && assignment.dmsf_file_revision.dmsf_file %>
                <%= link_to(h(assignment.dmsf_file_revision.title),
                  {:controller => 'dmsf_files', :action => :show, :id => assignment.dmsf_file_revision.dmsf_file }) %>
              <% end %>
            </td>
            <td class="title">
              <% if assignment.dmsf_file_revision %>
                <% if assignment.dmsf_file_revision.dmsf_file.dmsf_folder %>
                  <%= link_to(h(assignment.dmsf_file_revision.dmsf_file.dmsf_folder.title),
                    {:controller => 'dmsf', :action => 'show', :id => assignment.dmsf_file_revision.dmsf_file.project,
                     :folder_id => assignment.dmsf_file_revision.dmsf_file.dmsf_folder}) %>
                <% elsif assignment.dmsf_file_revision.dmsf_file.project %>
                  <%= link_to(l(:link_documents), {:controller => 'dmsf', :action => 'show',
                                                   :id => assignment.dmsf_file_revision.dmsf_file.project }) %>
                <% end %>
              <% end %>
            </td>
            <td class="dmsf_buttons">
              <%= render(:partial => 'dmsf_workflows/approval_workflow_button',
                         :locals => {:file => assignment.dmsf_file_revision.dmsf_file,
                                     :file_approval_allowed => User.current.allowed_to?(:file_approval,
                                       assignment.dmsf_file_revision.dmsf_file.project),
                                     :workflows_available => nil,
                                     :project => assignment.dmsf_file_revision.dmsf_file.project,
                                     :wf => assignment.dmsf_workflow_step.dmsf_workflow, :dmsf_link_id => nil }) %>
            </td>
          </tr>
        <% end %>
      </tbody>
    </table>
  <% end %>
<% else %>
  <p class="nodata"><%= l(:label_no_data) %></p>
<% end %>
